.\" Copyright (C) 2022 Stefan Roesch <shr@fb.com>
.\"
.\" SPDX-License-Identifier: LGPL-2.0-or-later
.\"
.TH io_uring_cq_advance 3 "January 25, 2022" "liburing-2.1" "liburing Manual"
.SH NAME
io_uring_cq_advance \- mark one or more io_uring completion events as consumed
.SH SYNOPSIS
.nf
.B #include <liburing.h>
.PP
.BI "void io_uring_cq_advance(struct io_uring *" ring ","
.BI "                          unsigned " nr ");"
.fi
.SH DESCRIPTION
.PP
The
.BR io_uring_cq_advance (3)
function marks
.I nr
IO completions belonging to the
.I ring
param as consumed.

After the caller has submitted a request with
.BR io_uring_submit (3),
the application can retrieve the completion with
.BR io_uring_wait_cqe (3),
.BR io_uring_peek_cqe (3),
or any of the other CQE retrieval helpers, and mark it as consumed with
.BR io_uring_cqe_seen (3).

The function
.BR io_uring_cqe_seen (3)
calls the function
.BR io_uring_cq_advance (3).

Completions must be marked as seen, so their slot can get reused. Failure to do
so will result in the same completion being returned on the next invocation.

.SH RETURN VALUE
None
.SH SEE ALSO
.BR io_uring_submit (3),
.BR io_uring_wait_cqe (3),
.BR io_uring_peek_cqe (3),
.BR io_uring_wait_cqes (3),
.BR io_uring_wait_cqe_timeout (3),
.BR io_uring_cqe_seen (3)
